home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / dev / obero / oberon_lib.lha / oberon-a / source1.lha / source / Amiga / NonVolatile.mod < prev    next >
Text File  |  1994-08-08  |  4KB  |  192 lines

  1. (*************************************************************************
  2.  
  3.      $RCSfile: NonVolatile.mod $
  4.   Description: Interface to nonvolatile.library
  5.  
  6.    Created by: fjc (Frank Copeland)
  7.     $Revision: 3.1 $
  8.       $Author: fjc $
  9.         $Date: 1994/08/08 01:17:07 $
  10.  
  11.   Includes Release 40.15
  12.  
  13.   (C) Copyright 1990-1993 Commodore-Amiga, Inc.
  14.       All Rights Reserved
  15.  
  16.   Oberon-A Interface Copyright © 1994, Frank Copeland.
  17.   This file is part of the Oberon-A Interface.
  18.   See Oberon-A.doc for conditions of use and distribution.
  19.  
  20. *************************************************************************)
  21.  
  22. MODULE NonVolatile;
  23.  
  24. (*
  25. ** $C- CaseChk       $I- IndexChk  $L+ LongAdr   $N- NilChk
  26. ** $P- PortableCode  $R- RangeChk  $S- StackChk  $T- TypeChk
  27. ** $V- OvflChk       $Z- ZeroVars
  28. *)
  29.  
  30. IMPORT E := Exec, SYS := SYSTEM;
  31.  
  32. (*
  33. **      $VER: nonvolatile.h 40.8 (30.7.93)
  34. **
  35. **      nonvolatile.library interface structures and defintions.
  36. *)
  37.  
  38.  
  39. (*****************************************************************************)
  40.  
  41. TYPE
  42.  
  43.   NVInfoPtr * = CPOINTER TO NVInfo;
  44.   NVInfo * = RECORD
  45.     maxStorage * :  E.ULONG;
  46.     freeStorage * :  E.ULONG;
  47.   END;
  48.  
  49.  
  50. (*****************************************************************************)
  51.  
  52. TYPE
  53.  
  54.   EntryPtr * = CPOINTER TO Entry;
  55.   Entry * = RECORD (E.MinNode)
  56.     name * :  E.STRPTR;
  57.     size * :  E.ULONG;
  58.     protection * :  SET;
  59.   END;
  60.  
  61. CONST
  62.  
  63. (* bit definitions for mask in SetNVProtection().  Also used for
  64.  * NVEntry.nve_Protection.
  65.  *)
  66.   eDelete * = 0;
  67.   eAppName * = 31;
  68.  
  69.  
  70. (*****************************************************************************)
  71.  
  72. CONST
  73.  
  74. (* errors from StoreNV() *)
  75.   errBadName * = 1;
  76.   errWriteProt * = 2;
  77.   errFail * = 3;
  78.   errFatal * = 4;
  79.  
  80.  
  81. (*-- Library Base variable --------------------------------------------*)
  82.  
  83. CONST
  84.  
  85.   name * = "nonvolatile.library";
  86.  
  87. TYPE
  88.  
  89.   NonVolatileBasePtr* = CPOINTER TO NonVolatileBase;
  90.   NonVolatileBase* = RECORD (E.Library) END;
  91.  
  92. VAR
  93.  
  94.   base* : NonVolatileBasePtr;
  95.  
  96.  
  97. (*-- Library Functions ------------------------------------------------*)
  98.  
  99. (*
  100. **      $VER: nonvolatile_protos.h 40.5 (30.7.93)
  101. *)
  102.  
  103. (*--- functions in V40 or higher (Release 3.1) ---*)
  104.  
  105. LIBCALL (base : NonVolatileBasePtr) GetCopyNV *
  106.   ( appName        [8] : ARRAY OF CHAR;
  107.     itemName       [9] : ARRAY OF CHAR;
  108.     killRequesters [1] : E.LONGBOOL )
  109.   : E.APTR;
  110.   -30;
  111.  
  112. LIBCALL (base : NonVolatileBasePtr) FreeNVData *
  113.   ( data [8] : E.APTR );
  114.   -36;
  115.  
  116. LIBCALL (base : NonVolatileBasePtr) StoreNV *
  117.   ( appName        [8] : ARRAY OF CHAR;
  118.     itemName       [9] : ARRAY OF CHAR;
  119.     data          [10] : E.APTR;
  120.     length         [0] : E.ULONG;
  121.     killRequesters [1] : E.LONGBOOL )
  122.   : E.UWORD;
  123.   -42;
  124.  
  125. LIBCALL (base : NonVolatileBasePtr) DeleteNV *
  126.   ( appName        [8] : ARRAY OF CHAR;
  127.     itemName       [9] : ARRAY OF CHAR;
  128.     killRequesters [1] : E.LONGBOOL )
  129.   : BOOLEAN;
  130.   -48;
  131.  
  132. LIBCALL (base : NonVolatileBasePtr) GetNVInfo *
  133.   ( killRequesters [1] : E.LONGBOOL )
  134.   : NVInfoPtr;
  135.   -54;
  136.  
  137. LIBCALL (base : NonVolatileBasePtr) GetNVList *
  138.   ( appName        [8] : ARRAY OF CHAR;
  139.     killRequesters [1] : E.LONGBOOL )
  140.   : E.MinListPtr;
  141.   -60;
  142.  
  143. LIBCALL (base : NonVolatileBasePtr) SetNVProtection *
  144.   ( appName        [8] : ARRAY OF CHAR;
  145.     itemName       [9] : ARRAY OF CHAR;
  146.     mask           [2] : SET;
  147.     killRequesters [1] : E.LONGBOOL )
  148.   : BOOLEAN;
  149.   -66;
  150.  
  151.  
  152. (* determine the size of data returned by this library *)
  153. (* #define SizeNVData(DataPtr) ((((ULONG * ) DataPtr)[-1]) - 4) *)
  154.  
  155. (*------------------------------------*)
  156. PROCEDURE SizeNVData (DataPtr : E.APTR) : E.ULONG;
  157.   VAR size : LONGINT;
  158. BEGIN (* SizeNVData *)
  159.   SYS.GET (SYS.VAL (LONGINT, DataPtr) - 4, size);
  160.   RETURN size
  161. END SizeNVData;
  162.  
  163.  
  164. (*-- Library Base variable --------------------------------------------*)
  165. (* $L- *)
  166.  
  167. (*-----------------------------------*)
  168. PROCEDURE* CloseLib ();
  169.  
  170. BEGIN (* CloseLib *)
  171.   IF base # NIL THEN E.base.CloseLibrary (base) END
  172. END CloseLib;
  173.  
  174. (*-----------------------------------*)
  175. PROCEDURE OpenLib * (mustOpen : BOOLEAN);
  176.  
  177. BEGIN (* OpenLib *)
  178.   IF base = NIL THEN
  179.     base :=
  180.       SYS.VAL (
  181.         NonVolatileBasePtr,
  182.         E.base.OpenLibrary (name, E.libraryMinimum));
  183.     IF base # NIL THEN SYS.SETCLEANUP (CloseLib)
  184.     ELSIF mustOpen THEN HALT (100)
  185.     END;
  186.   END;
  187. END OpenLib;
  188.  
  189. BEGIN
  190.   base := NIL
  191. END NonVolatile.
  192.